home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-04-08 | 26.1 KB | 434 lines | [TEXT/MSWD] |
- Midi JukeBox 2.3
- (a.k.a. Square Dance, version 2.3)
- Copyright © 1996,
- by Randy Wilson (randy@axon.cs.byu.edu)
- http://synapse.cs.byu.edu/~randy
- http://synapse.cs.byu.edu/~randy/jukebox.html
- April 9, 1996
-
- Overview
- Midi JukeBox (formerly Square Dance) is a program for the Macintosh which
- plays standard MIDI files, and provides animated “dancing squares” to
- accompany the music. It also provides several options to make it possible to
- customize songs to your particular MIDI setup. In particular, Midi JukeBox
- allows you to:
- • Play Midi files through your external synthesizer while enjoying fun
- animation.
- • Play songs in the background while using another application.
- • Create song lists, and play lists in order, random order, continuously, etc.
- • Drag & Drop Midi files for immediate playback.
- • Customize Midi files as follows:
- - Transpose all pitches up or down by any amount
- - Change the tempo of the song during playback
- - Change various text events (track & instrument name, copyright, etc.)
- - Change channel and instrument assignments for each track.
- - Convert a type 0 MIDI file into a type 1 file.
- - Change the type of a file to ‘Midi’ so other software can recognize it.
- - Combine tracks.
- - “Funnel” a file into less than 16 channels (see below).
- The latest version of Midi JukeBox is available at:
-
- Funding
- Midi JukeBox is shareware. You are welcome to try it out for two weeks for
- free. If you use it after that, you should send $15 ($5 for students) to:
-
- Randy Wilson
- 860 East 43rd Ave.
- Eugene, OR 97405
-
- Registered owners will receive
- • the latest version of Midi JukeBox
- • a collection of fun MIDI files.
- • free upgrades to future versions of the program.
- Be sure to include your e-mail address, and (optionally) your postal address.
- If you have any questions or comments, please contact me by e-mail at:
- randy@axon.cs.byu.edu.
- For information on the latest version of Midi JukeBox, see the Midi JukeBox
- web page at http://synapse.cs.byu.edu/~randy/jukebox.html.
-
- System Requirements
- Midi drivers: Midi JukeBox has a built-in Midi driver. It also supports
- Apple’s MidiManager™, if you have it. (If you do not have it, it can be
- downloaded via anonymous ftp from unicorn.cerl.uiuc.edu in the directory
- /pub/lime.) Since Apple may not be continuing support for the Midi Manager, a
- future version of Midi JukeBox will probably use Opcode’s Open Music System
- (OMS). Note that background playback is limited using the built-in driver,
- because the interrupt-driven playback conflicts with the built-in driver and
- crashes. Using Apple's MidiManager™ will provide smoother background
- playback.
- Sound Hardware (or software): Midi JukeBox will work best if you have a
- MIDI sound module or keyboard of some sort (preferably General-MIDI
- compatible), and a MIDI interface to go from your Mac’s modem or printer port
- to your synthesizer. If you don’t have any MIDI hardware, you can still make
- sound through your Mac's speaker (see “QuickTime Music” at the bottom of this
- document), but be warned that it probably won't sound too wonderful.
- Mac Hardware & Software: Midi JukeBox has worked fine under System 6.0.5
- and System 7.1, and has worked on a Mac SE, SE/30, II, and Quadra 840AV.
- Let me know if there is a configuration that it won’t work on. Most of the
- problems reported so far have been an inability to sign in to the Midi Manager.
- In several cases this was simply because the Midi Manager was not installed
- properly. Hopefully the built-in driver will take care of most of those problems.
-
- Tempo Control
- During playback, you can change the tempo by adjusting the scroll bar at the
- bottom of the playback screen. Clicking on the arrows changes the tempo by 1
- quarter note per minute, while clicking in the bar changes the tempo by 10
- q./min. Notes are actually posted to the Midi driver about 1/2 a second before
- they are really played, so changes in tempo will not take effect until after that
- duration.
- If you find that you don’t usually need the tempo bar and would rather not
- look at it, you can deselect the “Display Tempo Bar” option under the Options
- menu.
- If you want to make this change in tempo permanent, select “Fix Tempo...”
- under the Edit menu. This will make it so that when you save the file, all tempo
- settings will be adjusted by the amount shown. Of course, the change will still
- not be permanent if you do not save the file. (See Editing, below).
-
- Displaying Text Events
- Text events occurring at time 0 in each track are displayed beneath the track
- on the playback screen. Text events include instrument names (e.g., acoustic
- guitar, grand piano, snare drum), track names (e.g., Soprano, melody, lead), and
- other miscellaneous text events, such as the title and author of the song, the name
- and e-mail address of the person who sequenced it, and copyright notices.
- Track 0 is the tempo track and does not have channel messages such as note
- on/off events. It can, however, have text events, so these are displayed centered
- at the bottom of the screen. When there are multiple text events associated with
- any of the visible tracks, the text will be separated by a semicolon.
- Unfortunately, there is no truly standard way to do text events, so sometimes the
- text will look a little funny.
- If there are too many tracks for large text to fit on the screen, the font size is
- reduced. If there still isn’t room for all the text, the “visible” track text events
- are not displayed. If there still isn’t room, then the track 0 text is also hidden, so
- no text will be displayed. If you want all the text to be displayed in such
- situations, enlarge the window. If your monitor isn’t big enough, bummer.
-
- Editing Track 0 Text Events
- Text events for track 0 can be edited using the “Edit track 0...” option under
- the Edit menu. This dialog allows you to edit four text events and a copyright
- event.
- I have personally adopted the practice of using text events in track 0 to specify
- the title, composer, and other such information that applies to the entire song,
- while using text events on individual tracks to specify instrument assignment and
- other information that applies specifically to the track. That way the title and
- other information about the song as a whole appears centered at the bottom of the
- screen, and the information on each track doesn’t get confused with the title,
- author, etc.
- One drawback of this scheme is that some programs will look at track 0 text
- events as cues, and they will be all smashed together in the same place. Oh, well,
- that’s what we get for having loosely-defined standards.
- As a side note, many sequencers only allow 31 or fewer characters in a text
- event, so if you need more than that, make sure you’re done sequencing it before
- you put too much time into documenting your song via Midi JukeBox.
-
- Editing Visible Tracks
- The text events on the “visible” tracks (1..n) can be edited using the “Edit
- visible track...” dialog under the edit window. You can switch between tracks by
- using the buttons next to the track number at the top. The “<<“ and “>>“ buttons
- change by steps of five.
- Editing Track Text. There are separate text boxes for instrument names,
- track names and miscellaneous text events. I personally like to make sure that I
- give an instrument name for each track so that those trying to play my file on
- another setup have some hope of choosing the right instruments. I use track
- names for comments that don’t really have to do with the instrument, such as
- “melody”, “lead”, “alto part”, etc.
- To make it easy to assign GMIDI instrument names, the GMIDI instrument
- name for the current program change number is always displayed by the “Copy
- GMIDI Name” button. Changing the program change number updates the name
- shown, and clicking on this button copies the current name into the instrument
- name editing window.
- Editing Channel Assignments. The MIDI channel number of the first channel
- event found in the track is shown in the channel text edit box. A zero or “-”
- indicates that there were no channel messages in the track. There may be other
- channels used in the track besides that shown, but if you make any changes to the
- track (text/channel#/program#), the channel of every event in the track will be set
- to the one shown. These are supposed to be single-channel tracks, so usually this
- shouldn’t actually change anything. If you know that a song has a multi-channel
- track in it, you can leave channels alone while making other changes by setting
- the channel number to “-” (or zero) on each track that you don’t want the channel
- to change on.
- It is often desirable to change the channel such as when you have a synthesizer
- with less available channels than the song you’re trying to play. In such cases,
- you can assign several tracks with similar instruments to the same channel (this
- can also be done automatically. See “Funneling”, below). If you want ALL the
- tracks to be assigned to the same channel temporarily, you can use a filter instead
- (see “Filters”, below).
- Editing Program Changes. In a similar fashion, the first program change
- event occurring in each track is displayed, and its GMIDI instrument assignment
- is shown by the “Copy GMIDI Name” button, as explained above. Changing the
- program number automatically changes the name displayed there. Clicking on
- the copy button copies the GMIDI name into the instrument name edit box. If “-”
- is displayed, then there were no program changes in that track.
- Again, there may be more than one program change on a single track, and
- while I don’t think this is against the rules of MIDI files (especially when
- different instruments are used at different times in a song but on the same
- channel), it doesn’t seem like a great idea. However, if you know that there are
- several program changes in a single track and you don’t want them to change, set
- the program number to 0 or “-” and it will not change, even if other changes are
- made to the track.
- If the program number is non-zero, a single program change will be inserted
- at the beginning of the track, and all others will be stripped off. If you want to
- strip off all program changes in a track without inserting another program
- change at the beginning, you can use the value “-1” for the program number.
- Empty Tracks. Some tracks are used only for text events. When changes are
- made to the file, any tracks that contain no text or data will be removed. Thus, if
- you want to get rid of tracks that do nothing but hold text, you can delete the text,
- and the track will be automatically removed when changes take effect. If you
- want to move the text (such as a title or author) to the track 0 text instead, click
- the “Move to Track 0” button. Then the title will be nicely centered at the
- bottom instead of sitting under an unused tracks.
- Making Changes Effective. Many of the changes (such as text, channel, and
- program changes) seem to take effect immediately, but some (such as deleting
- empty tracks) require a conversion process that can take several seconds on slow
- computers and/or large files. In order to avoid doing the conversion more often
- than necessary, changes are really made to the data only when (1) “Make changes
- now” is selected from the Edit menu, or (2) when the file is saved. If you have
- any doubt as to how your file is going to look or behave after it is saved and
- reloaded, you can do one of these two things and the data will be converted and
- reinitialized.
-
- Type 0 -> Type 1 Conversion
- Midi JukeBox converts type 0 MIDI files (single track) into type 1 files
- (multiple tracks), so it can be used as a type 0->type 1 converter. During such
- conversions, each channel occurring in the type 0 file is put into its own track in
- the type 1 file, and track 0 is reserved as the tempo track with no channel
- messages. To make the conversion permanent, simply “Open” the file in Square
- Dance and then “Save” it again (usually with a different file name).
-
- Midi File Typer
- Midi JukeBox will usually open only files of type “Midi”. However, by
- deselecting the option “Display only Midi Files” under the “File” menu, you can
- open files of any type. Songs will always be saved with a file type of “Midi”, so
- it can be used to make downloaded files visible to other programs (like
- MasterTrax or QuickTime) that require the file to be of type “Midi”. Simply
- “Open” the file in Midi JukeBox, and then “Save” it again, with either the same or
- a different file name.
- The catch to this is, of course, that you can accidentally open non-midi files.
- Fortunately, all standard MIDI files begin with a special sequence of characters
- that identifies it, so if you pick the wrong kind of file, you’ll see an error
- message and the file will not be opened.
- Note: there are better ways to change the file type if you download songs on a
- regular basis. For example, a shareware program called “Midi Typer” allows
- you to drag & drop files onto it, and it will change all of the files to the type and
- creator of your choice. Also, preferences in programs such as Fetch, Netscape,
- StuffIt Expander, Unzip 2.0, uuUndo, and other utilities you may use to
- download, convert, and/or decompress your Midi files have an “Extension
- Mapping” option. This option allows you to set the file type and creator of files
- that end with, for example '.mid' or '.MID'. However, just in case a file doesn't
- end in that extension or you somehow got a file that wasn't so mapped, you can
- use Midi JukeBox to set the file type.
-
- Filters
- When the “Use filters” option under the Options menu is checked, filters can
- be used to cause certain events to be ignored. For example, if you would like to
- avoid any program change events from being sent to your synthesizer, you can
- select “no program changes” from the “Filter Settings...” dialog. You can also
- filter out other events such as pitch bend, control change, etc.
- I found that certain control changes trashed my keyboard's entire memory
- because they were not supported by my keyboard. You can now select which (if
- any) control changes to allow under the “Filter Settings...” dialog. If there just a
- few you want to allow, list the control change numbers (you may need to see the
- Midi Implementation Chart for your synth to see which control changes it
- recognizes) and select “Do only these...” If, on the other hand, your synth
- handles most control changes, but you just want to filter out a few of them, list
- those numbers, and select “Do all but these...”
- You can also filter out drums, which I found essential in trying to play songs
- on a non-multi-timbral synth like a Roland D-50. Drum events are supposed to
- be sent to channel 10, but if for some reason your drums are on a different
- channel, you can change the drum channel. This option actually allows you to
- avoid any channel (even if it isn’t the drum channel).
- You can also force all notes to be played to the same channel, which I also
- found useful on a non-multi-timbral setup. This comes in handy, too, if you want
- to preview a song by having all the notes play to the piano (for example), before
- assigning instrument numbers to each track. For such activities, set “no program
- changes,” “Play all events to channel 1”, and select “except drums” (so drums will
- still be played on channel 10) or “no drums” (so drums won’t be played at all).
- Note that filters do not change the actual MIDI data, but they are used during
- playback to decide which events to pass on to the Midi driver, and may alter the
- channel of certain events.
- Also note that filters will only work when the “Use Filters” option is checked
- under the option menu.
-
- Transposing
- Sometimes songs are just played in the wrong octave for your setup. Other
- times, you might want to sing or play along with a song, but it is out of your
- range or in the wrong key. You can use the “Transpose Settings...” dialog to
- decide how many half-steps up or down to transpose an entire song. Since drums
- usually use a different note for each different sound, transposing drums can be
- very unpleasant, so “except drums” should be checked in most cases.
- Again, the song will be transposed only when “Transpose” is checked under
- the “Options” menu. Transposing does not change the actual MIDI data, but is
- done in real time during playback.
-
- Combining Tracks
- The “Combine Tracks” command under the Edit menu can be used to combine
- two or more tracks into one track with the same channel and program numbers.
- When a song has several tracks that all play the same instrument, it slows down
- the playback, and makes the display more crowded. Combining tracks can
- alleviate this.
- Combining tracks alters the actual MIDI data, so it is usually a good idea to
- save the file under a different name if you save it, in case you decide you liked it
- better when it was split up.
-
- Deleting Tracks
- The “Delete Tracks” command under the Edit menu can be used to delete one
- or more tracks. Any tracks that have no midi events or text events will
- automatically be checked for deletion, though you can uncheck the boxes
- manually. I have noticed that several MIDI files have two copies of each track,
- which of course takes more CPU power to play. Deleting redundant tracks can
- speed things up. Also, empty tracks clutter the display window.
-
- Funnel
- The “Funnel” is used when a song uses more channels that your synth setup
- responds to. For example, my Roland U-20 only has six levels of multi-timbral
- capabilities (plus drums), so songs that use 8 different channels won’t play
- correctly. If you have a GMIDI synth that responds to all 16 channels, on the
- other hand, you don’t need a funnel at all.
- To use the funnel, you first need to edit the “Funnel settings...” under the
- Option menu. There, you check the box by all the channels your MIDI setup
- responds to, and click on the radio button to mark which of these channels is the
- drum channel (usually 10). For my U-20 setup, I checked numbers 1 through 6
- and 10, and selected the radio button on channel 10.
- You can check the “Automatic Funnel” option under the Options menu to
- cause funneling to take place automatically upon opening a MIDI file, or you can
- turn that option off and use “Funnel Now” to perform the funnel on a file you
- have already opened.
- The funnel does not immediately alter the MIDI data, but changes to the
- channel and program number assignments WILL be retained if any changes are
- made to the file via the Edit menu commands.
- The funnel takes the following steps to try to make the song work better on
- your setup. If after any step all tracks are using only ‘available’ (i.e., checked)
- channels, then the subsequent steps are not taken:
- 1. First see if funnel is needed for this song (if not, do nothing).
- 2. If there are any available channels that no track uses, move channel
- assignments to “fill in the holes”.
- 3. If there are any tracks that use the same program number (instrument), but
- different channels, combine their channels.
- 4. If there are any sound effects, swap them out so they don’t use any
- ‘available’ channels.
- 5. Combine the most ‘similar’ instruments until we are only using available
- channels. The similarity of instruments to each other is determined by a
- hierarchical division of GMIDI program numbers.
- This process may seem confusing, but it makes it much easier for those with
- limited multi-timbral capability to listen to someone else’s GMIDI file. Of
- course, step 5 assumes that you have your instruments set up in GMIDI order, so
- this still might not help some people.
-
- Midi Drivers
- Midi JukeBox originally supported only Apple's MidiManager™. The current
- version includes a built-in Midi driver for those who don't have the Midi
- Manager. However, as Macintosh hardware and system software continues to
- evolve, this driver may become incompatible.
- I am not allowed to distribute the Midi Manager with my program, but it is
- available on the internet at various sites, including the Lime demo site given
- above. Earlier versions (up to 2.1) of Midi Jukebox (and Square Dance) had
- trouble signing in to the Midi Manager. Beginning with version 2.2, the program
- should be able to sign in to the Midi Manager automatically. If not, it will allow
- you to make a manual connection using the PatchBay program. The next time
- you run Midi Jukebox, the connections you made should be re-established
- automatically.
-
- Song Lists
- Midi JukeBox allows you to create lists of songs and play them in a variety of
- ways.
- Creating Lists. To create a song list, choose “New Song List” from the “Song
- List” menu. This will open a blank, untitled song list. You can then add the
- currently-opened song to the list by choosing “Add Current to List”.
- Adding Songs. To add more than one song to the current list, choose “Add
- Files to List...” This will bring up a dialog box similar to that used to open files.
- Select individual Midi files and click the “Add” button to add them to the list. To
- add all of the Midi files in a folder (including all sub-folders), open the desired
- folder, and click on “Scan & Add All”. Unfortunately, there is nothing on the
- screen to indicate which files have already been added to the list. However, you
- can delete any duplicates that appear in your list. You can also add files to a list
- using drag & drag support (see below).
- Deleting Songs. To delete songs from the list, select the songs you want to
- delete and then hit the “delete” key or choose “Delete Selected” from the song list
- menu.
- Playing Songs. Options from the song list menu allow you to play the entire
- song list in order or in random order, or to play the list in order beginning from
- the first selected song. That option is useful when you stop playing a list in the
- middle, and then want to continue. If you select the “Continuous playback”
- option, then the song list will be played over and over until you select stop.
- When playing in random order, a new random order is used each time through
- the list.
- To play a single song, select it and hit return.
-
- Drag & Drop Support
- Midi JukeBox allows you to drag & drop Midi files onto it for immediate
- playback. A similar result can be achieved by selecting one or more files and
- then double-clicking one of them.
- If only one file is selected, it will be opened & played immediately. If more
- than one file is selected, they will all be added to a song list (the current list, if
- one is open, or else a new list), and then played in the order received.
- In System 6, only the double-clicking is supported (of course), and then only
- when Midi JukeBox is not yet running. In System 7, however, you can use
- double-clicking and/or drag & drop either before or after Midi JukeBox is
- running. Be aware that double-clicking will only work if the files have “Midi
- JukeBox” as their creator, but any Midi files can be dragged onto the Midi
- JukeBox icon and be played.
- In addition, you can drag & drop or double-click song lists to open them.
-
- Window Stuff
- The “Window” menu allows you to bring the song window or the list window
- to the front. It also allows you to hide either or both windows in case you don't
- want them to be displayed. In addition, it provides an option to hide the song
- window when Midi JukeBox is running in the background. This makes it so that
- you can listen to songs in the background without being distracted by the
- animation, but causes the animation to reappear when Midi JukeBox is running in
- the foreground.
- Finally, you can also hide the list window while songs are playing, and cause it
- to reappear again whenever you stop playing a song (so that you can, for
- example, choose another song to play from the list).
-
- QuickTime Music: Playing music without a synthesizer.
- It is possible to use Apple's Midi Manager, QuickTime 2.0 and QuickTime
- Musical Instruments to play Midi files through your Mac's built-in speaker using
- Midi JukeBox. Obviously the sound quality is fairly lame compared to having a
- real synthesizer available, and it is a pain to do, but if you don't have a
- synthesizer, then this may be your only option. Here's how you do it:
- 1. Get Apple's Midi Manager (See “Midi Drivers” above). Put the “Midi
- Manager” in your Extensions folder (in the System folder), put the “Midi Driver”
- in the System folder, and put the “PatchBay” application somewhere where you
- can find it (like the Apple Menu Items folder).
- 2. Get QuickTime 2.0, and put it in your system's “Extensions” folder.
- 3. Get QuickTime Musical Instruments, and put it in the “Extensions” folder,
- too.
- 4. Get QuickTime MIDI Player 1.3 (Note: this is someone else's $15
- shareware program. If you continue to use it, please pay their shareware fee,
- too).
- 5. Reboot. The above steps only need to be done once, but the rest must be
- done each time you want to play songs through your speaker.
- 6. Run Midi JukeBox, and make sure Midi Manager is selected as the Midi
- Driver.
- 7. Run QuickTime MIDI Player.
- 8. Run the PatchBay application, and connect the output of “Midi JukeBox”
- into the input of QuickTime. Also, disconnect the output of “Midi JukeBox”
- from the input of Apple Midi Driver. You can quit the PatchBay application, but
- you must leave the QuickTime MIDI Player running in order to play the music.
- 9. Now, play songs from Midi JukeBox, and they should come out your
- speaker. The faster your Mac is the better!
-
- Bugs
- Please send reports of bugs to me at:
- randy@axon.cs.byu.edu
- It would be helpful if you could be as specific as possible about the bug. If
- you have a particular MIDI file that you know is O.K., but which Midi JukeBox
- chokes on, I might want the file, too, so I can repeat the error and find out what
- is wrong. A bug that is not repeatable is really hard to track down.
-
- Disclaimer
- Midi JukeBox is distributed “as is.” I make no guarantees or warranties on the
- quality of the product and I cannot be held liable for any problems that this
- software may create. In particular, if you are doing something important on
- your computer while playing songs in the background, I would strongly caution
- you to save your work often in case the interrupts go haywire. The built-in MIDI
- driver is someone else's code, and may not be compatible with all models of
- Macintosh computers.
-
- I hope you enjoy Midi JukeBox. Drop me an e-mail note—I'd love to hear from
- you.
-
- Randy Wilson
- randy@axon.cs.byu.edu
- http://synapse.cs.byu.edu/~randy
-